#define _TOOL_SETPARA_GLOBALS
#include "bsp_iwdg.h"
#include "bsp_flash.h"
#include "bsp_w25qxx.h"
#include "Task_Monitor.h"
#include "Module_ChassisMotor.h"
#include "Tool_Kalman.h"
#include "Tool_SetPara.h"

u8 ParaFlag = 0;
/**
 * [InitParameter_User 默认值]
 */
void InitParameter_User(void)
{
	Parameter_User.data.Begin          = 0x55;
	Parameter_User.data.End            = 0x66;
	
	//键鼠
	Parameter_User.data.SPEED1         = 400;//一档速度(0~660)
	Parameter_User.data.SPEED2         = 660;//二档速度(0~660)
	//遥控
	Parameter_User.data.DR_SPEED       = 1.5;//速度（越大越快）
}

/**
 * [GetParameter_User 读取Flash中保存的值，若帧头或帧尾不正确则使用默认值]
 */
void GetParameter_User(void)
{
	#ifndef USE_SPIFLASH
		STMFLASH_Read(ADDR_FLASH_SECTOR_10,Parameter_User.FlashData,U32_BUFSIZE);
	#else
		W25QXX_Read(Parameter_User.W25QXXData,(u32)W25QxxAddress0,W25Qxx_BUFSIZE)  ;
	#endif	
	if(Parameter_User.data.Begin != 0x55 || Parameter_User.data.End != 0x66)
	{
		InitParameter_User();
		SetParameter_User();
	}
}

/**
 * [SetParameter_User 设置参数，存入Flash，自动保存帧头帧尾]
 */
void SetParameter_User(void)
{
	Parameter_User.data.Begin       = 0x55;
	Parameter_User.data.End         = 0x66;
	#ifndef USE_SPIFLASH
		STMFLASH_Write(ADDR_FLASH_SECTOR_10,Parameter_User.FlashData,U32_BUFSIZE);
	#else
		W25QXX_Write(Parameter_User.W25QXXData,(u32)W25QxxAddress0,W25Qxx_BUFSIZE)  ;
	#endif
}

/**
 * [InitParameter_Operater 默认值]
 */
void InitParameter_Operater(void)
{
	Parameter_Operater.data.Begin              = 0x55;
	Parameter_Operater.data.End                = 0x66;
}

/**
 * [GetParameter_Operater 读取Flash中保存的值，若帧头或帧尾不正确则使用默认值]
 */
void GetParameter_Operater(void)
{
	#ifndef USE_SPIFLASH
		STMFLASH_Read(ADDR_FLASH_SECTOR_11,Parameter_Operater.FlashData,U32_BUFSIZE);
	#else
		W25QXX_Read(Parameter_Operater.W25QXXData,(u32)W25QxxAddress1,W25Qxx_BUFSIZE)  ;
	#endif
	if(Parameter_Operater.data.Begin != 0x55 || Parameter_Operater.data.End != 0x66)
	{
		InitParameter_Operater();
		SetParameter_Operater();
	}
}

/**
 * [SetParameter_Operater 设置参数，存入Flash，自动保存帧头帧尾]
 */
void SetParameter_Operater(void)
{
	Parameter_Operater.data.Begin       = 0x55;
	Parameter_Operater.data.End         = 0x66;
	#ifndef USE_SPIFLASH
		STMFLASH_Write(ADDR_FLASH_SECTOR_11,Parameter_Operater.FlashData,U32_BUFSIZE);
	#else
		W25QXX_Write(Parameter_Operater.W25QXXData,(u32)W25QxxAddress1,W25Qxx_BUFSIZE)  ;
	#endif
}

void SetParaFlag(u8 _pFlag)
{
	ParaFlag = _pFlag;
}

u8 GetParaFlag(void)
{
	return ParaFlag;
}

/**
 * [bsp_ParaInit 从Flash中取得参数,相应设置好相关参数]
 */
void Tool_SetPara_Init(void)
{
	GetParameter_User();
	GetParameter_Operater();
}
